/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ficha;

import ficha.storyteller.vampiro.AreaFicha;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

/**
 *
 * @author yurifw
 */
public abstract class LabelNivel extends JLabel{
    private int nivel;
    protected int nivelMaximo;
    protected int nivelMinimo;
    private String especialidade;
    private AreaFicha areaFicha;
    
    Icon nivel0 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl00.gif"));
    Icon nivel1 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl01.gif"));
    Icon nivel2 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl02.gif"));
    Icon nivel3 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl03.gif"));
    Icon nivel4 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl04.gif"));
    Icon nivel5 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl05.gif"));
    Icon nivel6 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl06.gif"));
    Icon nivel7 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl07.gif"));
    Icon nivel8 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl08.gif"));
    Icon nivel9 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl09.gif"));
    Icon nivel10 = new ImageIcon(getClass().getResource("/ficha/imagens/nvl10.gif"));
    

    public LabelNivel(AreaFicha areaFicha) {
        this.areaFicha = areaFicha;
        setNivelMaximo();
        setNivelMinimo();
        setNivel(nivelMinimo);
        this.setText("");
        
        this.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent evt){
                if (evt.getButton()==MouseEvent.BUTTON1){
                    setNivel(getNivel()+1);
                } else if (evt.getButton()==MouseEvent.BUTTON3){
                    setNivel(getNivel()-1);
                } else if (evt.getButton()== MouseEvent.BUTTON2){
                    String especialidade = JOptionPane.showInputDialog(labelFor, "Digite a especialidade", "Especialidade", JOptionPane.QUESTION_MESSAGE);
                    if (especialidade!=null){
                        setEspecialidade(especialidade);
                    }
                }
            }
        });
    }
    
    
    
    protected abstract void setNivelMinimo();
    protected abstract void setNivelMaximo();
    
    public void setFicha(AreaFicha areaFicha){
        this.areaFicha = areaFicha;
    }
    
    public AreaFicha getFicha(){
        return this.areaFicha;
    }
    
    public void setNivel(int nivel){
        if (nivel>=nivelMinimo && nivel<=nivelMaximo){
            this.nivel = nivel;
            atualizaIcone();
        }
    }
    public int getNivel(){
        return this.nivel;
    }
    
    public String getEspecialidade() {
        return especialidade;
    }
    public void setEspecialidade(String especialidade) {
        this.especialidade = especialidade;
        setToolTipText("Especialidade: "+especialidade);
    }
    
    protected void atualizaIcone(){
        switch (nivel) {
                case 0:
                    setIcon(nivel0);
                    break;
                case 1:
                    setIcon(nivel1);
                    break;
                case 2:
                    setIcon(nivel2);
                    break;
                case 3:
                    setIcon(nivel3);
                    break;
                case 4:
                    setIcon(nivel4);
                    break;
                case 5:
                    setIcon(nivel5);
                    break;
                case 6:
                    setIcon(nivel6);
                    break;
                case 7:
                    setIcon(nivel7);
                    break;
                case 8:
                    setIcon(nivel8);
                    break;
                case 9:
                    setIcon(nivel9);
                    break;
                case 10:
                    setIcon(nivel10);
            }
    }
}
